package org.fast.develop.logicflow.runtime.instance;

import org.fast.develop.logicflow.core.meta.shape.LogicFlowDefinition;
import org.fast.develop.logicflow.runtime.monitor.LogicFlowMonitor;
import org.fast.develop.logicflow.runtime.node.LogicFlowNode;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;

/**
 * @author 莫寅
 * @createTime 2022-11-24 20:46
 * @desc：
 */
public class LogicFlowInstance {

    private String logicflowInstanceId;

    private Date createTime;

    private String describe;

    private String createdBy;

    private LogicFlowNode logicFlowNode;

    private Map<String, Object> variables = new HashMap<>();

    private LogicFlowDefinition metaData;

    private LogicFlowMonitor logicFlowMonitor;

    public String getLogicflowInstanceId() {
        return logicflowInstanceId;
    }

    public void setLogicflowInstanceId(String logicflowInstanceId) {
        this.logicflowInstanceId = logicflowInstanceId;
    }

    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    public String getDescribe() {
        return describe;
    }

    public void setDescribe(String describe) {
        this.describe = describe;
    }

    public String getCreatedBy() {
        return createdBy;
    }

    public void setCreatedBy(String createdBy) {
        this.createdBy = createdBy;
    }

    public LogicFlowNode getLogicFlowNode() {
        return logicFlowNode;
    }

    public void setLogicFlowNode(LogicFlowNode logicFlowNode) {
        this.logicFlowNode = logicFlowNode;
    }

    public LogicFlowDefinition getMetaData() {
        return metaData;
    }

    public void setMetaData(LogicFlowDefinition metaData) {
        this.metaData = metaData;
    }

    public Map<String, Object> getVariables() {
        return variables;
    }

    public void setVariables(Map<String, Object> variables) {
        this.variables = variables;
    }

    public LogicFlowMonitor getLogicFlowMonitor() {
        return logicFlowMonitor;
    }

    public void setLogicFlowMonitor(LogicFlowMonitor logicFlowMonitor) {
        this.logicFlowMonitor = logicFlowMonitor;
    }

    @Override
    public String toString() {
        return "LogicFlowInstance{" +
                "logicflowInstanceId='" + logicflowInstanceId + '\'' +
                ", createTime=" + createTime +
                ", describe='" + describe + '\'' +
                ", createdBy='" + createdBy + '\'' +
                ", logicFlowNode=" + logicFlowNode +
                ", metaData=" + metaData +
                '}';
    }
}
